'''
Created on 6.11.2010

@author: Aleksi
'''
import math
import pyglet
from pyglet import clock, font, image, window
from pyglet.gl import *
import threading

window = window.Window(fullscreen=True, vsync=True)
viivat = pyglet.resource.image('viivat3.png')
pallo = pyglet.resource.image('pallo.png')

class Viivat(object):
    
    def __init__(self):
        
        self.leveys = window.width / 800.0

    def luoSprite(self, kuva, rotaatio, scale, rot, r, g, b):
        self.kuva = kuva
        self.kuva.anchor_x = self.kuva.width / 2
        self.kuva.anchor_y = self.kuva.height / 2
        self.kuva_sprite = pyglet.sprite.Sprite(self.kuva, x=window.width / 2, y=window.height / 2)
        self.kuva_sprite.scale = scale*self.leveys
        self.kuva_sprite.rotation = rotaatio
        self.r = r
        self.g = g
        self.b = b
        self.kuva_sprite.color = (self.r, self.g, self.b)
        self.rot = rot
        
    def draw(self):
        self.kuva_sprite.draw()
            
    def muutu(self, r, g, b):
        self.kuva_sprite.rotation += self.rot
        self.r += r
        self.b += b
        self.g += g
        self.kuva_sprite.color = (self.r, self.g, self.b)
        
    def skaalaa(self, arvo):
        self.kuva_sprite.scale += arvo
        
class AudioPlayer(object):
    
    def __init__(self):
        #pyglet.options['audio'] = ('alsa', 'silent')
        self.player = pyglet.media.Player()
        
    def addItem(self, itemPath):
        addition = pyglet.media.load(itemPath, streaming=False)
        self.player.queue(addition)
        
    def play(self):
        self.player.play()
        
    def nextItem(self):
        self.player.next()
            

class Runko(object):

    def __init__(self):
        self.window = window
        self.time = clock.tick()
        self.viivat1 = Viivat()
        self.viivat2 = Viivat()
        self.rajahtaa_kuva = pyglet.sprite.Sprite(pyglet.resource.image('rajahtaa.png'), x=20, y=20,)
        self.rajahtaa_kuva.scale = 0.1
        self.viivat1.luoSprite(viivat, 0, 2.5, 0.3, 255, 255, 255)
        self.viivat2.luoSprite(viivat, 90, 2.5, -0.8, 255, 255, 255)
        self.pallo1 = Viivat()
        self.pallo2 = Viivat()
        self.pallo3 = Viivat()
        self.pallo1.luoSprite(pallo, 0, 3.0, 0.2, 255, 255, 255)
        self.pallo2.luoSprite(pallo, 90, 1.0, -0.5, 255, 255, 255)
        self.pallo3.luoSprite(pallo, 45, 0.5, 0.31, 255, 255, 255)
        
        pyglet.clock.set_fps_limit(60)
        self.zoom = 0.12
        self.vipu1 = False
        self.vipu2 = False
        self.vipu3 = False
        self.vipu4 = False
        self.vipu5 = False
        self.vipu6 = False
        self.vipu0 = True
        t1 = threading.Timer(3.0,self.setZoom, [-0.09])
        t2 = threading.Timer(7.0, self.setZoom, [0.0])
        t3 = threading.Timer(9.0, self.setVipu2, [True])
        t4 = threading.Timer(13.0, self.setVipu1, [True])
        t5 = threading.Timer(19.0, self.setVipu3, [True])
        t6 = threading.Timer(23.0, self.setVipu3, [False])
        t7 = threading.Timer(25.0, self.setVipu4, [True])
        t8 = threading.Timer(27.0, self.setVipu3, [True])
        t9 = threading.Timer(30, self.setVipu5, [True])
        t10 = threading.Timer(32, self.setVipu6, [True])
        t1.start()
        t2.start()
        t3.start()
        t4.start()
        t5.start()
        t6.start()
        t7.start()
        t8.start()
        t9.start()
        t10.start()
        self.audioPlayer = AudioPlayer()
        self.audioPlayer.addItem('sounds.wav')
        self.soita()
        
    def soita(self):
        self.audioPlayer.play()
        self.window.clear()
    
    def setVipu2(self, tila ):
        self.vipu2 = tila    
        
    def setVipu1(self, tila):
        self.vipu1 = tila

    def setVipu3(self, tila):
        self.vipu3 = tila
        
    def setVipu4(self, tila):
        self.vipu4 = tila
        
    def setVipu5(self, tila):
        self.vipu3 = False
        self.vipu5 = tila
        
    def setVipu6(self, tila):
        self.vipu5 = False
        self.vipu0 = False
        self.vipu6 = tila
        
    def setZoom(self, zoom):
        self.zoom = zoom
            
    def run(self):
        x = self.window.width / 5
        y = self.window.height / 2
        r1 = 0
        r2 = 0
        g1 = 0
        g2 = 0
        b1 = 0
        b2 = 0

        while self.vipu0 == True:
            self.window.dispatch_events()
            self.window.clear()
            if self.vipu4 == True:
                r1 = 120
                g1 = 12
                b1 = 255
            self.viivat1.muutu(r1,g1,b1)
            if self.vipu4 == True:
                r2 = 10
                g2 = 212
                b2 = 100
                self.zoom = 3
            self.viivat2.muutu(r1,g1,b1)
            self.viivat1.skaalaa(self.zoom)
            self.viivat2.skaalaa(self.zoom)
            self.viivat1.draw()
            self.viivat2.draw()
            if self.vipu2 == True:
                credits = pyglet.text.Label('Apsup presents:', font_size = 70, bold = True, color=(255,100,100,255), x=window.width//2, y=window.height//2,
                                          anchor_x='center', anchor_y='center')
                credits.draw()
            if self.vipu1 == True:
                title = pyglet.text.Label('Broken Promises', font_size = 125, bold = True, color=(255,0,0,255), x=window.width//2, y=window.height//2,
                                          anchor_x='center', anchor_y='center')
                title.draw()
                
            self.window.flip()
                
            while self.vipu3 == True:
                self.window.clear()
                self.pallo1.muutu(r1,g1,b1)
                self.pallo2.muutu(r2,g2,b2)
                self.pallo3.muutu(g2,r1,b1)
                self.pallo1.draw()
                self.pallo2.draw()
                self.pallo3.draw()
                pyglet.clock.tick()
                self.window.flip()
                pyglet.clock.tick()
                      
            while self.vipu5 == True:
                self.window.clear()
                self.rajahtaa_kuva.scale += 0.1
                self.rajahtaa_kuva.draw()
                pyglet.clock.tick()
                self.window.flip()
                pyglet.clock.tick()
            
            if self.vipu6 == True:
                return                          




runko = Runko()
runko.run()


pyglet.app.run()
pyglet.app.exit()
                
    
